import axios from 'axios';
import Router from "@/router/index.js";
import { ElMessage } from 'element-plus';
import store from "@/store/index.js";

// 基本配置
const instance = axios.create({
	// baseURL: 'http://localhost:8090/app', // 根据实际情况修改API地址
	timeout: 5000 // 设置超时时间，单位为ms
});

// // 请求拦截器
instance.interceptors.request.use(config => {
	loading(true)
	config.headers['satoken'] = sessionStorage.getItem("satoken"); // 设置请求头部分，这里举例使用了localStorage存储的token作为身份标识
	console.log(config.headers)
	return config;
}, error => {
	console.log(error);
	return Promise.reject(error);
});

// 响应拦截器
instance.interceptors.response.use(response => {
	const data = response.data;
	console.log("请求响应结果：" + data)
	loading(false)
	if (data && data.code !== 200) { // 根据接口返回的状态码判断是否有错误
		data.msg.split(',').forEach(item => {
			ElMessage.error(item);
		});
		// Router.push('/login'); // 跳转到登录页面
		return Promise.reject(new Error(data.message));
	} else {
		return response.data;
	}
}, error => {
	console.log(error)
	if (error.response) {
		const message = error.response.data ? error.response.data.message : '请求失败';
		console.log(message)
		// store.dispatch('error/reportError', message); // 调用模块中的 action
		if (error.response.status === 401) {
			Router.push('/login'); // 跳转到登录页面
		}
	}

	return Promise.reject(error);
});


function loading(v){
	store.commit('setLoaded',v)
}


export default instance;
